package org.example.likou150.land;

public class NumIslands {
    public int numIslands(char[][] grid) {
        int landSize = 0;
        for (int i = 0; i < grid.length; i++) {
            for (int i1 = 0; i1 < grid[0].length; i1++) {
                if(grid[i][i1] == '1'){
                    dfs(grid,i, i1);
                    landSize++;
                }
            }
        }
        return landSize;
    }

    private void dfs(char[][] grid, int row, int col) {
        if(row < 0 || col < 0 || grid.length <= row || grid[0].length <= col){
            return;
        }

        if(grid[row][col]=='1'){
            grid[row][col]='0';

            // 左
            dfs(grid, row, col-1);
            // 右
            dfs(grid, row, col+1);

            // 上
            dfs(grid, row-1, col);
            // 下
            dfs(grid, row+1, col);

        }
    }

//    private void dfs(char[][] grid, int row, int col) {
//        if(row < 0 || col < 0 || grid.length <= row || grid[0].length <= col){
//            return;
//        }
//
//        if(grid[row][col]=='1'){
//            grid[row][col]='0';
//            // 上
//            dfs(grid, row-1, col);
//            // 下
//            dfs(grid, row+1, col);
//            // 左
//            dfs(grid, row, col-1);
//            // 右
//            dfs(grid, row, col+1);
//        }
//    }
}
